package com.david.controller;

import cn.dev33.satoken.annotation.SaCheckPermission;
import com.david.entity.UserInfo;
import com.david.service.UserInfoInterface;
import com.david.vo.*;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import java.util.List;

/**
 * @author David
 */
@RestController
@RequestMapping("/Admin")
public class UserRole {

    @Resource
    UserInfoInterface userInfoInterface;

    /**
     * 获取所有账户
     * @param page 当前页码
     * @param limit 每页限制
     * @return 返回账户列表
     */
    @GetMapping("/getAllUser")
    public CardBean getAllUser(Integer page, Integer limit){
        return userInfoInterface.getAllUser(page,limit);
    }

    /**
     * 删除单个账户
     * @param username 账户名称
     * @return 返回状态
     */
    @GetMapping("/super/deleteUser/{username}")
    public CardBean deleteUser(@PathVariable @NotEmpty String username){
        return userInfoInterface.deleteUser(username);
    }

    /**
     * 增加账户
     * @param userBean 账户信息
     * @return 返回状态
     */
    @PostMapping("/super/addUser")
    public CardBean addUser(@RequestBody @Valid UserBean userBean){
        return userInfoInterface.addUser(userBean);
    }

    /**
     * 查找账户
     * @param userCondition 查找条件
     * @return 返回结果
     */
    @PostMapping("/super/findUser")
    public CardBean findUser(@RequestBody UserCondition userCondition){
        return userInfoInterface.findUser(userCondition);
    }

    /**
     * 批量删除
     * @param names 删除列表
     * @return 返回状态
     */
    @PostMapping("/super/batchRemoveUser")
    public CardBean batchRemoveUser(@RequestBody List<String> names){
        return userInfoInterface.batchRemoveUser(names);
    }

    /**
     * 改变账户权限及状态
     * @param userInfo 更改的信息
     * @return 返回状态
     */
    @PostMapping("/super/changeUser")
    public CardBean changeUser(@RequestBody UserInfo userInfo){
        return userInfoInterface.changeUser(userInfo);
    }

}
